#include "Template.h"
#include <iostream>

using namespace std;

AbstractClass::AbstractClass() {
}

AbstractClass::~AbstractClass() {

} 

void AbstractClass::TemplateMethod()
{
	this->PrimitiveOperation1();
	this->PrimitiveOperation2();
}

ConcreteClass1::ConcreteClass1() {

} 

ConcreteClass1::~ConcreteClass1() {

} 

void ConcreteClass1::PrimitiveOperation1() {
	cout << "ConcreteClass1...PrimitiveOperation1"<<endl;
} 

void ConcreteClass1::PrimitiveOperation2() {
	cout << "ConcreteClass1...PrimitiveOperation2"<<endl;
}

ConcreteClass2::ConcreteClass2() {
} 

ConcreteClass2::~ConcreteClass2() {

} 

void ConcreteClass2::PrimitiveOperation1() {
	cout << "ConcreteClass2...PrimitiveOperation1"<<endl;
} 

void ConcreteClass2::PrimitiveOperation2() {
	cout << "ConcreteClass2...PrimitiveOperation2"<<endl;
}